The present invention relates, in general, to software development, and more particularly to software development for a system to control physical objects.
In an automated factory environment the tasks performed often require interaction of several pieces of equipment, so equipment is often linked together by a computer network to facilitate the exchange of information. Use of such a computer network allows great flexibility in reconfiguring the equipment to accommodate changes in production needs. However this very usefulness makes the reliability of the computer network a critical element in determining the factory's output. If the computer network is slowed or stopped for any reason then the entire factory output slows or stops. Great emphasis is placed on avoiding any situation which would degrade the performance of the computer network.
Typically equipment in such an environment is designed specifically to allow the greatest possible flexibility in configuration. For example using a computer interface which is interchangeable with all other computer interfaces throughout the network. Thus equipment may be connected to many different computers within the network to perform the same task. Operations are broken down to their most fundamental tasks which are then performed by equipment designed for that task under computer control. The concept of an object is often used to designate a distinct portion of equipment which can be controlled by a computer. These objects typically comprise some equipment such as a robot arm, a display, a sensor, a control such as a door lock, or a complex piece of equipment which itself has imbeded computers. An object may be physical hardware, yet another software process, or some combination of hardware and software which performs a predetermined function. For automated testing of semiconductor components, the objects typically comprise such functions as parts handlers and feeders, devices which apply a specific electrical signal to a part being tested, and sensors which measure the electrical output of the part. Various operator functions are often sensed in this way for convenience. A control as simple as a "start" button may in fact be sensed under software control and actually act to trigger the start of a software process comprising several hundred steps. Typically all of the objects within a system use the same physical interface to the computer system, for example the plug-in expansion slots provided with a typical personal computer system. These expansion slots comprise a connector mounted on a motherboard into which a printed circuit board connector can be inserted to provide some specialized capability. In this way one interface board may readily be used with many different computers.
In designing such a system, it is essential that the software exchange information and commands only with a specific preselected object. Typically this is achieved by the use of a unique "object address code" which is assigned to every object which can be connected to the system. This object address code may take many forms. An object's address code may be a specific code on a bus, a dedicated location within a computer memory, or a specific code signal which is exchanged as part of each message. Whatever its physical form, the object address code is typically arranged so that the software uses a single code for the address. This code is then used by special purpose "device handler" software to actually exchange information with the desired object.
The method of assigning a unique address to each object is typically used regardless of whether the object is attached directly to the computer which is controlling the object or the object communicates through a computer network of some kind. The form of the address is simply extended to include some form of network wide identification in addition to the local computer address. The use of networked computers to communicate with objects which are physically remote from the controlling computer allows a single computer to control a very large number of objects. A single small computer could easily have the potential to control several thousand objects at one time. With this many objects and associated object addresses the management tasks are significant. It is necessary to keep track of the functionality and capability of each object as well as ensuring that no two objects share an address. Conversely, it is also desirable to minimize the number of unused addresses due to computer memory constraints and the need to communicate the address between the computer system and the object being controlled.
The earliest software of this type used address codes which were coded into the software. This required that the complex software be changed for even a minor change in hardware configuration. This was extremely time consuming and often introduced errors due to the changes. In addition, such changes required highly skilled programming personnel to perform. A better method was to use an external table as a map, independent of the software process, which allowed the software to find the actual address of an object by finding a code which identified that object within the map. This allowed a special software process to edit and revise the addresses within the map without altering the complex main software. This method still required that a specially trained person actually perform the changes however. Both methods suffered from the deficiency that the computer and objects had to be shut down to change the master map. With a large computer network comprising several hundred computers and objects being controlled, this requirement severely reduces both the useful operational time of the system and the flexibility to reconfigure the system as required.
Frequently it is necessary to start a new task, for example whenever the mix of products being produced is altered or a piece of equipment must be restocked. When this desired task uses computer controlled equipment, the software must ensure that the appropriate equipment is available. In other words, to successfully perform the desired task a satisfactory solution for the equipment requirements must be found. This is typically called a "resolution" of the equipment requirements. For the equipment requirements of a task to be resolved implies that some means to communicate with each piece of equipment be provided to the task. In the prior art this is sometimes achieved by means of a fixed mapping of the equipment, typically generated when the entire network was started. This fixed map is then used to automatically configure the system operating software to allow communication with each piece of equipment. This is the method which is typically used with a personal computer, for example. Alternatively the system operating software may be configured to communicate with every type of equipment which could be connected to the system. Using this approach, every time a new task is started all equipment which might be connected to every machine within the network must be tested to determine what equipment is currently available. This search is extremely time consuming with large networks where many thousand pieces of equipment could be found. This search may take several minutes to complete, during which time execution of other tasks is delayed or halted. The delayed tasks reduce the output of the equipment they control. The prior art thus requires either stopping and restarting the system frequently or delaying work in progress whenever a new task is started while a search is performed. Either alternative severely reduces the productivity of the factory which uses this equipment.
There is a need for a control scheme which can be revised without requiring that the entire computer network be removed from service and without requiring intervention by a human operator. Furthermore it would be desirable to allow any object to be used wherever it is needed throughout the network. The rest of the network would be undisturbed during this process and the object would be functional as soon as it was reconnected. Similarly, objects which fail or are upgraded can simply be removed and reconnected as desired. Commonly encountered situations such as starting a new task must be handled without degrading the output of the equipment being controlled. A scheme which meets all of these requirements would allow a factory to operate at its fullest potential, with equipment being moved, altered, and restarted while other equipment continues to operate uninterrupted.